import { wxConfig, wxLogin } from '@/api/modules/wx'
import appConfig from '@/config/app'
import { useRouter } from 'vue-router'
import weixin from 'weixin-js-sdk'
const router = useRouter()
// 保存初始页面地址
let initialPageUrl = ''
const login=async (code: string) => {
  const res = await wxLogin({
    loginType: 'login-008',
    thirdCode: code
  })
  if (res?.code - 0 === 0) {
    localStorage.setItem(appConfig.TOKENNAME, res.data.token)
    localStorage.setItem('userInfo', JSON.stringify(res.data))
  } else {
    //这一步，主要是为了，如果有code，但已经失效，说明登录失败
    // 返回初始页面地址，如果没有保存则返回首页
    router.push(initialPageUrl || '/')
  }
}
// 登录前
const loginBefore = (appId:any) => {
  const query = new URLSearchParams(window.location.search);
  const code = query.get('code');
  // 保存初始页面地址，排除code参数
  const url = new URL(window.location.href)
  url.searchParams.delete('code')
  initialPageUrl = url.pathname + url.search
  if(code){
    login(code)
  } else {
    // 没有登录且没有code参数，跳转到登录页
    // 检查当前是否已经在login页面，如果不是才跳转
    if (router.currentRoute.value.path !== '/login') {
      window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${url}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
      // router.push('/login')
    }
  }
}
export const wxInit=async ()=>{
  try{
    const res:any=await wxConfig({url:window.location.href})
    localStorage.setItem('appId',res.appId)
    if(localStorage.getItem(appConfig.TOKENNAME)){
      weixin.config({
        appId: res.appId, // 必填，公众号的唯一标识
        timestamp: res.timestamp, // 必填，生成签名的时间戳
        nonceStr: res.nonceStr, // 必填，生成签名的随机串
        signature: res.signature,// 必填，签名
        jsApiList: ['updateAppMessageShareData','updateTimelineShareData','previewImage','uploadImage','downloadImage','getNetworkType','closeWindow'] // 必填，需要使用的JS接口列表
      })

      weixin.ready(()=>{
        console.log('微信JS-SDK初始化成功')
      })

      weixin.error((err)=>{
        console.error('微信JS-SDK初始化失败', err)
      })
    }else{
      loginBefore(res.appId)
    }

  } catch (error) {
    console.error('微信JS-SDK配置错误', error)
  }
}